<?php

//////////////////////////////////////////////////////////////////////////////80
// FileManager Controller
//////////////////////////////////////////////////////////////////////////////80
// Copyright (c) Atheos & Liam Siira (Atheos.io), distributed as-is and without
// warranty under the modified License: MIT - Hippocratic 1.2: firstdonoharm.dev
// See [root]/license.md for more. This information must remain intact.
//////////////////////////////////////////////////////////////////////////////80
// Authors: Codiad Team, @Fluidbyte, Atheos Team, @hlsiira
//////////////////////////////////////////////////////////////////////////////80

if (file_exists("../../common.php")) {
	require_once("../../common.php");
}
require_once("class.filemanager.php");

//////////////////////////////////////////////////////////////////////////////80
// Verify Session or Key
//////////////////////////////////////////////////////////////////////////////80
Common::checkSession();

$action = Common::data("action");

$dest = Common::data('dest');
$name = Common::data('name');
$path = Common::data('path');
$type = Common::data('type');

$modifyTime = Common::data('modifyTime');
$content = Common::data('content');
$patch = Common::data('patch');
$type = Common::data('type');

//////////////////////////////////////////////////////////////////////////////80
// Security Check
//////////////////////////////////////////////////////////////////////////////80
$path = Common::getWorkspacePath($path);
$dest = Common::getWorkspacePath($dest);

if (!$action) {
	Common::sendJSON("E401m"); die;
}

//////////////////////////////////////////////////////////////////////////////80
// Handle Action
//////////////////////////////////////////////////////////////////////////////80
$Filemanager = new Filemanager();

switch ($action) {
	//////////////////////////////////////////////////////////////////////////80
	// Create
	//////////////////////////////////////////////////////////////////////////80
	case 'create':
		$Filemanager->create($path, $type);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Delete
	//////////////////////////////////////////////////////////////////////////80
	case 'delete':
		$Filemanager->delete($path);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Duplicate
	//////////////////////////////////////////////////////////////////////////80
	case 'duplicate':
		$Filemanager->duplicate($path, $dest);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Index
	//////////////////////////////////////////////////////////////////////////80
	case 'index':
		$Filemanager->index($path);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Open
	//////////////////////////////////////////////////////////////////////////80
	case 'open':
		$Filemanager->open($path);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Rename
	//////////////////////////////////////////////////////////////////////////80
	case 'rename':
		$Filemanager->rename($path, $name);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Save
	//////////////////////////////////////////////////////////////////////////80
	case 'save':
		$Filemanager->save($path, $modifyTime, $patch, $content);
		break;

	//////////////////////////////////////////////////////////////////////////80
	// Default: Invalid Action
	//////////////////////////////////////////////////////////////////////////80
	default:
		Common::sendJSON("E401i");
		break;
}